#include "StdAfx.h"
#include "UnitTest++.h"

#include "ListElement.h"

//////////////////////////////////////////////////
//ListElementTest
//////////////////////////////////////////////////

TEST(TestListElementConstructor)
  {
  int data = 1;
  ListElement<int>* list_element = new ListElement<int>(&data);

  CHECK_EQUAL(*(list_element->GetData()),1);
  CHECK(!list_element->GetPrevListElement());
  CHECK(!list_element->GetNextListElement());
  }

//------------------------------------------------

TEST(TestListElementData)
  {
  int data = 1;
  ListElement<int>* list_element = new ListElement<int>(&data);

  CHECK_EQUAL(*(list_element->GetData()),1);

  int new_data = 2;
  list_element->SetData(&new_data);

  CHECK_EQUAL(*(list_element->GetData()),2);
  }

//------------------------------------------------

TEST(TestListElementNextPrevious)
  {
  int data_prev = 1;
  ListElement<int>* prev_list_element = new ListElement<int>(&data_prev);
  CHECK(!prev_list_element->GetPrevListElement());
  CHECK(!prev_list_element->GetNextListElement());

  int data_next = 2;
  ListElement<int>* next_list_element = new ListElement<int>(&data_next);
  CHECK(!next_list_element->GetPrevListElement());
  CHECK(!next_list_element->GetNextListElement());

  prev_list_element->SetNextListElement(next_list_element);
  next_list_element->SetPrevListElement(prev_list_element);

  CHECK(!prev_list_element->GetPrevListElement());
  CHECK_EQUAL(prev_list_element->GetNextListElement(), next_list_element);

  CHECK_EQUAL(next_list_element->GetPrevListElement(), prev_list_element);
  CHECK(!next_list_element->GetNextListElement());
  }

//------------------------------------------------

//////////////////////////////////////////////////
